package com.gf.exam.service;

import java.util.List;

import com.gf.base.type.ExamType;
import com.gf.base.type.PlayMode;
import com.gf.common.bean.Page;
import com.gf.exam.model.Cell;
import com.gf.exam.model.Exam;
import com.gf.user.model.User;

/**
 * 
 * @author zhuguifeng guifeng.net@gmail.com
 * @version 创建时间：2012-12-3 下午2:35:46
 */
public interface ExamCellService {

	/**
	 * 保存整个项目
	 * 
	 * @param title
	 * @param introduction
	 * @param cellNo
	 * @param exTimerH
	 * @param exTimerM
	 * @param exTimerS
	 * @param examType
	 * @param htmlContents
	 * @return exam的保存ID
	 */
	public long save(User user, String title, String introduction, int cellNo,
			boolean active, int repeatFrom, int repeatTo, PlayMode playMode,
			int repeatTime, int exTimerH, int exTimerM, int exTimerS,
			String examType, String[] htmlContents);

	/**
	 * 对指定ID进行更新
	 * 
	 * @param id
	 * @param title
	 * @param introduction
	 * @param cellNo
	 * @param exTimerH
	 * @param exTimerM
	 * @param exTimerS
	 * @param examType
	 * @param htmlContents
	 * @return
	 */
	public long update(long id, String title, String introduction, int cellNo,
			boolean active, int repeatFrom, int repeatTo, PlayMode playMode,
			int repeatTime, int exTimerH, int exTimerM, int exTimerS,
			String[] htmlContents);

	/**
	 * 发布项目<br>
	 * examType->public
	 * 
	 * @param id
	 * @return
	 */
	public long publish(long id);

	/**
	 * 查看某一个项目
	 * 
	 * @param id
	 * @return
	 */
	public Exam scan(long id, long userId);

	/**
	 * 用户答卷前先得到项目信息
	 * 
	 * @param id
	 * @return
	 */
	public Exam join(long id);

	/**
	 * 得到我参与的项目列表
	 * 
	 * @param userId
	 * @param curpage
	 * @param pageSize
	 * @return
	 */
	public Page getParticipate(long userId, int curpage, int pageSize);

	/**
	 * 得到我发布的项目列表
	 * 
	 * @param userId
	 * @param curpage
	 * @param pageSize
	 * @return
	 */
	public Page getMyExam(long userId, int curpage, int pageSize,
			ExamType examType);

	/**
	 * 得到某张PPT
	 * 
	 * @param examId
	 * @param number
	 * @return
	 */
	public Cell getCell(long examId, int number);

	/**
	 * 得到全部ppt
	 * 
	 * @param pageSize
	 * @param currentPage
	 * @return
	 */
	public Page getAll(int pageSize, int currentPage);

	/**
	 * 删除ppt
	 * 
	 * @param id
	 * @return
	 */
	public boolean delete(long id);

	/**
	 * 得到ppt总数
	 * 
	 * @param userId
	 * @param examType
	 * @return
	 */
	public int getTotal(long userId, ExamType examType);

	/**
	 * 得到该PPT下的所有内容
	 * 
	 * @param examId
	 * @return
	 */
	public List<Cell> getAllCells(long examId);

	/**
	 * 得到用户参与的项目数量
	 * 
	 * @param userId
	 * @return
	 */
	public int getJoinNumberByUserId(long userId);
}
